package com.uzai.console.service.sysdomain;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.sysdomain.*;
import com.uzai.console.dto.sysdomain.sysdomaindetail.SysDomainRebuyDto;
import com.uzai.console.entity.SysDomain;
import com.uzai.console.vo.kuaizhan.CheckDomainBanVo;
import com.uzai.console.vo.kuaizhan.CreateSharedCodeVo;
import com.uzai.console.vo.sysdomain.*;

import javax.servlet.http.HttpServletResponse;

/**
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface SysDomainService {

    /**
     * 查询系统快站域名列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainQuery
     * @return null
     */
    Page<SysDomainKuaizhanInfoVo> findSysDomainKuaizhanList(SysDomainQuery sysDomainQuery);

    /**
     * 查询快站域名价格
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    SysDomainKuaizhanPriceVo findSysDomainKuaizhanPrice();

    /**
     * 购买系统快站域名
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    BuySysDomainVo buySysDomainKuaizhan(SysDomainBuyDto sysDomainBuyDto);

    /**
     * 快站域名续费
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainRebuyDto
     * @return null
     */
    BuySysDomainVo rebuySysDomainKuaizhan(SysDomainRebuyDto sysDomainRebuyDto);

    /**
     * 查询系统快站域名详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainIdDto
     * @return null
     */
    SysDomainKuaizhanInfoVo findSysDomainKuaizhanInfo(SysDomainIdDto sysDomainIdDto);

    /**
     * 编辑系统快站域名
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainKuaizhanDto
     * @return null
     */
    void updateSysDomainKuaizhan(SysDomainKuaizhanDto sysDomainKuaizhanDto);

    /**
     * 检测快站域名是否封禁
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainIdDto
     * @return null
     */
    CheckDomainBanVo checkSysDomainKuaizhan(SysDomainIdDto sysDomainIdDto);

    /**
     * 生成快站域名共项目
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainIdDto
     * @return null
     */
    CreateSharedCodeVo createShareCode(SysDomainIdDto sysDomainIdDto);

    /**
     * 通过共享码添加快站域名
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainShareCodeDto
     * @return null
     */
    void addSysDomainByShareCode(SysDomainShareCodeDto sysDomainShareCodeDto);

    /**
     * 查询系统自用域名列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainQuery
     * @return null
     */
    Page<SysDomainPrivateInfoVo> findSysDomainPrivateList(SysDomainQuery sysDomainQuery);

    /**
     * 添加系统自用域名
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainPrivateDto
     * @return null
     */
    void addSysDomainPrivate(SysDomainPrivateDto sysDomainPrivateDto);

    /**
     * 查询系统自用域名详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainIdDto
     * @return null
     */
    SysDomainPrivateInfoVo findSysDomainPrivateInfo(SysDomainIdDto sysDomainIdDto);


    /**
     * 修改系统自用域名
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainPrivateDto
     * @return null
     */
    void updateSysDomainPrivate(SysDomainPrivateDto sysDomainPrivateDto);

    /**
     * 删除
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param sysDomainIdDto
     * @return null
     */
    void deleteSysDomain(SysDomainIdDto sysDomainIdDto);

    /**
     * 下载源码
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param response
     * @return null
     */
    void downloadSourceCode(HttpServletResponse response);

    /**
     * 获取下载源码URL
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param
     * @return null
     */
    SourceCodeDownloadUrl getDownloadSourceCodeUrl();

    /**
     * 获取随机二维码
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    RandomDomainVo getRandomDomain();

    /**
     * 根据域名ID查询域名
     *
     * @param merId
     * @param domainId
     * @return
     */
    SysDomain getById(Long merId, Long domainId);
}
